perm filename TESTB.SAI[1,JMC] blob sn#005234 filedate 1969-12-12 generic text, type T, neo UTF8
00100	COMMENT 
00200	"PROGRAM TO FIND INTEGERS EXPRESSABLE AS SUMS OF CUBES
00300	IN TWO DIFFERENT WAYS AND TO LEARN TO USE SAIL";
00400	
00500	BEGIN INTEGER n, lim;
00600	COMMENT 
00700	"Ask for  n, the number up to which cubes are to be taken
00800	and for  lim, the size of array to be used for storing
00900	the numbers found.";
01000	outstr("n = "); n ← cvd(inchwl);
01100	outstr("lim = "); lim ← cvd(inchwl);
01200	BEGIN INTEGER ARRAY a[1:lim],b[1:lim],c[1:lim],d[1:lim];
01300	INTEGER m,i,j,k,l,i1,i2,i3,j1,j2,j3,k1,k2,k3; real w; LABEL r; BOOLEAN p;
01400	integer procedure gcd(integer  i,  j);
01500	begin integer t; label a;
01600	if i>j then i ↔ j;
01700	a:
01800	if i=0 then return(j);
01900	t←j mod i; j←i; i←t;
02000	go to a end;
02100	m ← 0;
02200	i1←0; i2←i3←1;
02300	for i←1 step 1 until n do begin
02400	j1←0; j2←1; j3←i3+1;
02500	for j←1 step 1 until i do begin
02600	k1←j1+6; k2←j2+k1; k3←i3-k2;
02700	for k←j+1 step 1 while k<i and k3>0 do begin
02750	w←k3;
02800	l←w←w↑0.3333334;if l<k then done;
02900	if w-l < 0.001 and k3=l↑3 and gcd(i,gcd(j,gcd(k,l)))=1 then
03000	BEGIN m←m+1;a[m] ← i; b[m] ← j; c[m] ← k; d[m] ← l ;
03050	outstr(cvs(i)&" "&cvs(i3)&" "&cvs(j)&" "&
03060	cvs(j3)&" "&cvs(k)&" "&cvs(k3)&" "&cvs(l)&
03070	" "&cvf(w)) end;
03100	k1←k1+6;k2←k2+k1;k3←k3-k2 end;
03200	j1←j1+6;j2←j2+j1;j3←j3+j2 end;
03300	i1←i1+6;i2←i2+i1;i3←i3+i2 end;
03400	r:
03500	p ← FALSE;
03600	FOR i←1 STEP 1 UNTIL m-1 DO
03700	IF a[i]↑3+b[i]↑3 > a[i+1]↑3+b[i+1]↑3 THEN
03800	BEGIN a[i] ↔ a[i+1]; b[i] ↔ b[i+1]; c[i] ↔ c[i+1];
03900	d[i] ↔ d[i+1]; p ← TRUE END;
04000	IF p THEN GO TO r;
04100	
04200	COMMENT 
04300	"Print the pairs found.";
04400	FOR i←1 STEP 1 UNTIL m DO
04500	OUTSTR(CVS(a[i]↑3+b[i]↑3)&" = "&CVS(a[i])&
04600	"↑3 + "&CVS(b[i])&"↑3 = "&CVS(c[i])&"↑3 + "&
04700	CVS(d[i])&"↑3
04800	")
04900	END
05000	END;